【速報】RDS for Oracleが”令和”表示に対応しました!
元号が平成から令和に変わって半月以上経ちますが、皆さんもう慣れましたか?
米国時間2019年5月16日付で、AWSからAmazon RDS for Oracleの、2019年4月度のパッチセットアップデート(PSU)およびリリースアップデート(RU)が発表されました。
こちらのアップデートにて、新元号"令和"に対応したとの記載がありました。 (リンク先が日本語表示の場合は、リンク先ページ右上の言語設定を"English"に変更して確認ください)
- 11g R2(Version 11.2.0.4.v20)
- 12c R1 (Version 12.1.0.2.v16)
- 12c R2 (Version 12.2.0.1.ru-2019-04.rur-2019-04.r1)
いずれのバージョンも、Patch 28730253として、"SUPPORT NEW ERA REIWA FOR JAPANESE IMPERIAL CALENDAR"の記載があります。
動作確認
RDSインスタンス作成
RDS Oracleを起動直後に令和が扱えるようになっているかどうか、AWS東京リージョンで確認します。
主に以下の設定で、動作確認用データベースインスタンスを作成します。
- 11g R2
- エディション: Oracle Standard Edition One
- ユースケース: 開発/テスト
- ライセンスモデル: ライセンス込み
- DBエンジンのバージョン: 11.2.0.4.v20
- DBインスタンスのクラス: db.m4.large
- DBインスタンス識別子: reiwa11g
- データベースの名前: ORCL
- ポート: 1521
- 文字セット名: AL32UTF8
- 12c R1
- エディション: Oracle Standard Edition Two
- ユースケース: 開発/テスト
- ライセンスモデル: ライセンス込み
- DBエンジンのバージョン: 12.1.0.2.v16
- DBインスタンスのクラス: db.m4.large
- DBインスタンス識別子: reiwa12cr1
- データベースの名前: ORCL
- ポート: 1521
- 文字セット名: AL32UTF8
- 12c R2
- エディション: Oracle Standard Edition Two
- ユースケース: 開発/テスト
- ライセンスモデル: ライセンス込み
- DBエンジンのバージョン: Version 12.2.0.1.ru-2019-04.rur-2019-04.r1
- DBインスタンスのクラス: db.m4.large
- DBインスタンス識別子: reiwa12cr2
- データベースの名前: ORCL
- ポート: 1521
- 文字セット名: AL32UTF8
クライアント接続、動作確認
インスタンスが作成できたところで、クライアントからログオンして、和暦表示を確認します。 クライアントには、macOS版Oracle SQL Developer(バージョン19.1.0.094)を使用します。
それぞれのデータベースインスタンスへログオンし、sysdate関数を使った日付データ(ブログ執筆時は日本時間2019年5月17日)を和暦表示させるSQL文を実行します。
11g R2 (11.2.0.4.v20)
SELECT version FROM v$instance; VERSION ----------------- 11.2.0.4.0 SELECT TO_CHAR(sysdate, 'EEYY"年"MM"月"DD"日"', 'nls_calendar=''Japanese Imperial''') AS "EEYY年MM月DD日" FROM dual; EEYY年MM月DD日 --------------------------------------------- 令和01年05月17日 SELECT TO_CHAR(sysdate, 'EYY/MM/DD', 'nls_calendar=''Japanese Imperial''') AS "EYY/MM/DD" FROM dual; EYY/MM/DD ---------------------- R01/05/17
12c R1 (12.1.0.2.v16)
SELECT version FROM v$instance; VERSION ----------------- 12.1.0.2.0 SELECT TO_CHAR(sysdate, 'EEYY"年"MM"月"DD"日"', 'nls_calendar=''Japanese Imperial''') AS "EEYY年MM月DD日" FROM dual; EEYY年MM月DD日 --------------------------------------------- 令和01年05月17日 SELECT TO_CHAR(sysdate, 'EYY/MM/DD', 'nls_calendar=''Japanese Imperial''') AS "EYY/MM/DD" FROM dual; EYY/MM/DD ---------------------- R01/05/17
12c R2 (Version 12.2.0.1.ru-2019-04.rur-2019-04.r1)
SELECT version FROM v$instance; VERSION ----------------- 12.2.0.1.0 SELECT TO_CHAR(sysdate, 'EEYY"年"MM"月"DD"日"', 'nls_calendar=''Japanese Imperial''') AS "EEYY年MM月DD日" FROM dual; EEYY年MM月DD日 --------------------------------------------- 令和01年05月17日 SELECT TO_CHAR(sysdate, 'EYY/MM/DD', 'nls_calendar=''Japanese Imperial''') AS "EYY/MM/DD" FROM dual; EYY/MM/DD ---------------------- R01/05/17
いずれも日付データを"令和"や"R"を含む和暦で表示させることができました。
ただし、ブログ執筆時点(日本時間2019年5月17日)では、どのバージョンも和暦を西暦に変換する時にORA-01864エラーが発生してしまいます。
SELECT TO_CHAR(TO_DATE('令和01年05月17日', 'EEYY"年"MM"月"DD"日"', 'nls_calendar=''Japanese Imperial'''), 'YYYY/MM/DD') AS "YYYY/MM/DD" FROM dual; 次のコマンドの開始中にエラーが発生しました : 行 1 - SELECT TO_CHAR(TO_DATE('令和01年05月17日', 'EEYY"年"MM"月"DD"日"', 'nls_calendar=''Japanese Imperial'''), 'YYYY/MM/DD') AS "YYYY/MM/DD" FROM dual エラー・レポート - ORA-01864: 指定した日付は現行カレンダの有効範囲外です SELECT TO_CHAR(TO_DATE('R01/05/17', 'EYY/MM/DD', 'nls_calendar=''Japanese Imperial'''), 'YYYY/MM/DD') AS "YYYY/MM/DD" FROM dual; 次のコマンドの開始中にエラーが発生しました : 行 1 - SELECT TO_CHAR(TO_DATE('R01/05/17', 'EYY/MM/DD', 'nls_calendar=''Japanese Imperial'''), 'YYYY/MM/DD') AS "YYYY/MM/DD" FROM dual エラー・レポート - ORA-01864: 指定した日付は現行カレンダの有効範囲外です
現状あまり"令和"の文字列を含む日付データを西暦に変換する、などの和暦→西暦変換シチュエーションはないと思いますが、この点の対応は今後に期待したいと思います。
それでは、また。
ご参考
EC2インスタンス上にインストールしたOracle Databaseに対しては、以下サポートから提供されている情報を元に、パッチ適用などの手動操作が必要です。